/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.component.gateway.dianlan.protocol.passive;

import info.peigen.hotpot.component.gateway.dianlan.facade.enums.DianlanHeatingContactorStatus;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;

/**
 * <b>(DianlanBatteryStatusInfo)</b>
 * <p>
 * 单体电池状态信息
 * <pre>
 * 位置(字节/位)	参数定义	            参数说明	                 备注
 * 2.4-1.1	单体电池最高电压	12bit，1.25mV/bit，偏移量：0	0xFFF无效
 * 3.8-2.5	单体电池最低电压	12bit，1.25mV/bit，偏移量：0	0xFFF无效
 * 5.4-4.1	单体电池平均电压	12bit，1.25mV/bit，偏移量：0	0xFFF无效
 * 5.6-5.5	保留
 * 5.8-5.7	加热接触器状态	2bit，1/bit，偏移量：0；00无效、01断开、10闭合、11故障       加热回路可正常工作，发送“10”。
 * 7.4-6.1	最高电压电芯号	12bit，1/bit，偏移量： 0	    0xFFF无效
 * 8.8-7.5	最低电压电芯号	12bit，1/bit，偏移量： 0	    0xFF无效
 * </pre>
 *
 * @author LiDaHai
 * @version 1.0.0
 * @since 2023/1/12
 */
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
public class DianlanBatteryStatusInfo {
    /** 单体电池最高电压,单位mV */
    // TODO 错误值：1746 ， 正确值：3353.75mV
    Double                        highestVoltage;
    /** 单体电池最低电压 */
    Double                        lowestVoltage;
    /** 单体电池平均电压 */
    Double                        averageVoltage;
    /** 保留 */
    String                        reserve;
    /** 加热接触器状态 */
    DianlanHeatingContactorStatus heatingContactorStatus;
    /** 最高电压电芯号 */
    Integer                       highestVoltageNumber;
    /** 最低电压电芯号 */
    Integer                       lowestVoltageNumber;

    public String toString() {
        return "单体电池最高电压：" + highestVoltage + "mV" + "，" +
                "单体电池最低电压：" + lowestVoltage + "mV" + "，" +
                "单体电池平均电压：" + averageVoltage + "mv" + "，" +
                "加热接触器状态：" + heatingContactorStatus.getMessage() + "，" +
                "最高电压电芯号：" + highestVoltageNumber + "，" +
                "最低电压电芯号" + lowestVoltageNumber;
    }
}